The present invention relates generally to computer systems and, more particularly, to systems and techniques for receiving information from and conveying information to a user of a computer system.
With the advent of the personal computer, the use of computer systems is becoming increasingly prevalent in everyday life. In the past, computers were often housed in highly restricted areas, with access limited to a few computer scientists and programmers. Today, however, computers can be seen on the desktops of most business professionals. Running software applications such as word processors and spreadsheets, for example, even the average business professional can realize substantial productivity gains. Besides the business environment, computers can also be found in wide use both at home and at school.
Also in contrast to the past, the average computer user of today is usually not a computer scientist. Instead, he or she will typically have little or no formal training in the computer sciences or even in the basic use of a personal computer. Nevertheless, these untrained workers often must be proficient in the use of computers in order to compete effectively in the job market. An applicant for a legal secretary position today, for example, is expected to be proficient in the use of wordprocessing software, such as WordPerfect.TM.. As a result, there have been much interest in providing computers which are easier to use.
To increase ease of use, designers of computer systems have labored for decades to create architectures which are intuitive. Most of this effort has been centered around the user interface or UI--the means by which a user communicates (i.e., supplies input and receives output) with a computer. Not surprisingly, the quality of a user interface depends to an extent on the technology in the underlying hardware.
Early advances in user interface design came in the form of "interactive" computer systems. Unlike "batchprocessing" systems, these computers allowed users to interact in real-time, often printing the desired results moments after the user had keyed in an appropriate command. Employing teletype (TTY) terminals, however, these early command-line systems were interactive only to the extent of receiving or printing one line of text at a time.
As TTY interfaces gave way to video display terminals (VDTs), it became possible for a user to input and receive information anywhere on a screen. Typically employing special keystrokes, these character-based VDTs allowed a user to move a cursor across the screen. Thus, a user could "go back" (reposition the cursor) and correct mistakes and/or otherwise update information.
Exemplified by Microsoft's DOS A&gt; prompt, these systems were still rather limited in their ability to receive user input, however. A typical system, for example, could only process one user-typed command at a time. In an effort to keep the number of keystrokes required for a command to a manageable level, these command-line interfaces tended to employ short commands; however, these commands were often cryptic as well. Thus while VDTs provided increased flexibility, these "command-line" interfaces were still far from intuitive for the average user.
With increasingly widespread availability of powerful microprocessors, graphical user interfaces (GUIs, pronounces "gooeys") have become feasible. A GUI is a type of display format that enables a user to operate a computer by pointing to pictorial representations, such as "icons" (bitmaps) and "pull down" menus, displayed on a screen device. Choices are generally selected by the user with a keyboard and/or pointing device; the latter including such well-known devices as a mouse, track ball, digitizing tablet, and light pen, or the like. Thus, the need for the user to memorize special commands has been lessened by the ability to operate a computer by selecting screen objects.
Well-known GUIs include Apple's Macintosh (Mac) interface, Microsoft's Windows, IBM's OS/2 Presentation Manager, Sun Microsystem's Open Look, and Open Software Foundation's Motif. Employing one or more windows, a menu bar, and a screen pointer, each of these systems can be readily distinguished from almost any non-GUI system.
The screen cursor or pointer, typically displayed as a small arrow icon (bitmap), allows the user to select individual points on the screen. In operation, the screen cursor moves to a desired screen location in response to movements of a pointing device (e.g., mouse) by the user. Besides movement, most pointing devices include one or more switches or "mouse buttons" for specifying additional user input or "user events." For example, a user may select a screen point by "clicking" (depressing and releasing) a mouse button once while the cursor is positioned at the desired point. By double-clicking (two mouse clicks in rapid succession) a user may select an item and start an action. By "dragging" (continually depressing a mouse button) the user may move objects on the screen or select groups of objects. Thus, objects can be picked up, moved, and directly manipulated with a versatility that is not possible with a keyboard alone. Moveover, pointing is a very natural, human action which, unlike a keyboard, does not require any special training to master.
The menu bar runs across the top of the screen and serves to group or categorize commands available to the user. Clicking on an item on the menu bar typically causes a "pull-down" menu to appear. This second or "submenu" also includes a number of items, each of which is associated with a desired action, including the display of even more menus. To select a desired action, the user usually clicks the corresponding menu item with the screen or mouse pointer. For some menu items, particularly those which may be nested in several layers deep, a keyboard equivalent or "hot key" may be available but. Unfortunately, these must also be memorized by the user.
A window is a rectangle displayed on the screen that allows a user to work within a program. In typical operation, the user may move the window about on the screen, change its size or shape, enlarge it to fill the screen, close it entirely, or change how much of its contents are displayed. To aid the user in the manipulation of its contents, a window will typically include a number of user interface components, such as buttons, menus, sliders, and the like. Outside the window, the screen can display other screen objects, such as other windows, disk drive icons, or even a trash can icon.
Another advantage attendant to a GUI environment is consistency of operation between application software. For example, a task common to more than one application (e.g., saving a data file) is generally performed in the same manner regardless of the particular application (e.g., spreadsheet, wordprocessor, and the like) currently operating. To foster this consistency, most GUI vendors publish style guides setting forth interface guidelines for application developers. IBM's System Application Architecture, Common-User Access: Advanced Interface Design Guide (SC26-4582-0) and Microsoft's Windows style guides are two such examples.
Despite efforts to present a consistent interface, however, most application software still requires complex user actions, such as triple-clicking or dragging a mouse device while a key is held down. Thus, there typically exists a plethora of ways to do almost anything in a graphical interface, such as the Mac. While this increases the flexibility of a system, it also adds to the complexity of the interface that the user must master. And this problem is by no means limited just to novice users. Experienced computer users are reluctant to read user manuals and, hence, often fair no better than novice users.
The problem of interface complexity is even worse between GUIs from different vendors. In that case, there is usually no common style guide to which the multi-platform application developer can turn. Moreover, competing GUIs will often be purposely inconsistent, presumably for marketing and/or legal reasons. All told, the user is still required to memorize special commands.
The present invention recognizes that it is highly desirable to provide computers with system and application software which is highly intuitive to users, including those who are untrained in the use of the software. What is needed is a system and interface methods which require little or no knowledge of specific commands by the user. More particularly, the system should automatically and explicitly indicate to the user the appropriate action he or she may take. The present invention fulfills this and other needs.